package com.btpj.shop.service;

import com.btpj.shop.dto.param.UserParam;
import com.btpj.shop.entity.User;

public interface UserService {

    /**
     * 查询指定用户名的用户
     *
     * @param name 用户名
     * @return 指定用户名的用户
     */
    User getUserByName(String name);

    /**
     * 登录
     *
     * @param name     登录名
     * @param password 登录密码
     * @return token
     */
    String login(String name, String password);


    /**
     * 获取当前登录用户详情
     *
     * @return 当前登录用户详情
     */
    User getUserInfo();

    /**
     * 检查登录密码是否正确
     *
     * @param password 密码
     * @return 登录密码是否正确
     */
    boolean checkPassword(String password);

    /**
     * 修改密码
     *
     * @param newPassword 新密码
     * @return 是否成功
     */
    boolean changePwd(String newPassword);

    /**
     * 用户注册
     *
     * @param name     用户名
     * @param password 密码
     * @return 是否成功
     */
    boolean register(String name, String password);

    /**
     * 是否存在指定ID的用户
     *
     * @param id 指定用户的ID
     * @return 是否存在指定ID的用户
     */
    boolean exists(Long id);

    /**
     * 禁用/解除禁用用户
     *
     * @param ids    用户ID集
     * @param locked 是否锁定
     * @return 是否成功
     */
    boolean lockOrUnlockUsers(Long[] ids, Boolean locked);

    /**
     * 更新用户信息
     *
     * @param param UserParam
     * @return 是否成功
     */
    boolean updateUser(UserParam param);
}
